package list_Node;

import java.util.ArrayList;
import java.util.List;

//234. 回文链表
public class Num234_isPalindrome {
    public boolean isPalindrome(ListNode head) {
        List<Integer> list = new ArrayList<>();
        ListNode p = head;
        while (p != null){
            list.add(p.val);
            p = p.next;
        }
        int l = 0;
        int r = list.size() - 1;
        while (l < r){
            if (list.get(l) != list.get(r)){
                return false;
            }
            l++;
            r--;
        }
        return true;

    }



    /**
     * 找中间节点，反转，在判断回文
     */
    //判断回文链表
//    public boolean isPalindrome(ListNode head) {
//        //找到中间节点
//        ListNode mid=middleNode(head);
//        //从中间反转链表
//        ListNode l1=reverseList(mid);
//        while (l1!=null){
//            if (l1.val!=head.val){
//                return false;
//            }
//            l1=l1.next;
//            head=head.next;
//        }
//        return true;
//    }
//    //反转链表（递归）
//    public ListNode reverseList(ListNode head) {
//        if (head==null||head.next==null){
//            return head;
//        }
//        ListNode sc=head.next;
//        ListNode newHead=reverseList(sc);
//        sc.next=head;
//        head.next=null;
//        return newHead;
//    }
//    //中间节点
//    public ListNode middleNode(ListNode head) {
//        // fast一次走两步
//        ListNode fast = head;
//        // low一次走一步
//        ListNode low = head;
//        // 当fast为null(偶数个节点) || fast.next == null(奇数个节点)
//        while (fast != null && fast.next != null) {
//            low = low.next;
//            fast = fast.next.next;
//        }
//        return low;
//
//    }
}
